
import ar.com.binarit.Person
import ar.com.binarit.Role
import ar.com.binarit.entities.Categoria
import ar.com.binarit.entities.Estado
import ar.com.binarit.entities.Mubbia
import ar.com.binarit.entities.ParametrosSistema
import ar.com.binarit.entities.TipoUsuario

class BootStrap {

    def init = { servletContext ->
		
		if (Role.count()==0){
			new Role(authority: 'ROLE_ADMIN', description: 'Admin role').save(flush: true, failOnError: true)
			new Role(authority: 'ROLE_FACEBOOK', description: 'Admin role').save(flush: true, failOnError: true)
			new Role(authority: 'ROLE_USER', description: 'Admin role').save(flush: true, failOnError: true)
		}
		
		if (TipoUsuario.count()==0){
			new TipoUsuario(descripcion: TipoUsuario.ADMINISTRADOR, version: 0).save(flush: true, failOnError: true)
			new TipoUsuario(descripcion: TipoUsuario.MODERADOR, version: 0).save(flush: true, failOnError: true)
			new TipoUsuario(descripcion: TipoUsuario.NORMAL, version: 0).save(flush: true, failOnError: true)
		}
		
		if (Estado.count()==0){
			new Estado(descripcion: Estado.ABIERTA, version: 0).save(flush: true, failOnError: true)
			new Estado(descripcion: Estado.CERRADA, version: 0).save(flush: true, failOnError: true)
		}
		
		if (Categoria.count()==0){
			new Categoria(descripcion: "Mubbia", jerarquia: 0, categoriaPadre:null, version: 0).save(flush: true, failOnError: true)
			new Categoria(descripcion: "Amor", jerarquia: 0, categoriaPadre:null, version: 0).save(flush: true, failOnError: true)
			new Categoria(descripcion: "Animales", jerarquia: 0, categoriaPadre:null, version: 0).save(flush: true, failOnError: true)
			new Categoria(descripcion: "Arte", jerarquia: 0, categoriaPadre:null, version: 0).save(flush: true, failOnError: true)
			new Categoria(descripcion: "Aventura", jerarquia: 0, categoriaPadre:null, version: 0).save(flush: true, failOnError: true)
			new Categoria(descripcion: "Celebridades", jerarquia: 0, categoriaPadre:null, version: 0).save(flush: true, failOnError: true)
			new Categoria(descripcion: "Cine", jerarquia: 0, categoriaPadre:null, version: 0).save(flush: true, failOnError: true)
			new Categoria(descripcion: "Deportes", jerarquia: 0, categoriaPadre:null, version: 0).save(flush: true, failOnError: true)
			new Categoria(descripcion: "Diversion", jerarquia: 0, categoriaPadre:null, version: 0).save(flush: true, failOnError: true)
			new Categoria(descripcion: "Educacion", jerarquia: 0, categoriaPadre:null, version: 0).save(flush: true, failOnError: true)
			new Categoria(descripcion: "Medioambiente", jerarquia: 0, categoriaPadre:null, version: 0).save(flush: true, failOnError: true)
			new Categoria(descripcion: "Moda", jerarquia: 0, categoriaPadre:null, version: 0).save(flush: true, failOnError: true)
			new Categoria(descripcion: "Musica", jerarquia: 0, categoriaPadre:null, version: 0).save(flush: true, failOnError: true)
			new Categoria(descripcion: "Proyectos", jerarquia: 0, categoriaPadre:null, version: 0).save(flush: true, failOnError: true)
			new Categoria(descripcion: "Salud", jerarquia: 0, categoriaPadre:null, version: 0).save(flush: true, failOnError: true)
			new Categoria(descripcion: "Tecnologia", jerarquia: 0, categoriaPadre:null, version: 0).save(flush: true, failOnError: true)
			new Categoria(descripcion: "Viajes", jerarquia: 0, categoriaPadre:null, version: 0).save(flush: true, failOnError: true)
		}
		
		if (Person.count()==0){
			crearUsuarios()
		}
		
		if (Mubbia.count() == 0){
//			def fecha = new Date()
//			def mubbia = new Mubbia(titulo: "primer mubbia", descripcion:"TExto de prueba aca", categoria: Categoria.last(),
//			usuarioCreador: Usuario.first(), estado: Estado.abierta(), fechaCreacion: fecha, fechaFinalizacion: fecha.plus(30),
//			)
//			mubbia.save(flush: true, failOnError: true)
//			Usuario.all.each{ usuario ->
//				mubbia.unirse(usuario)
//			}
		}
		
		if(ParametrosSistema.count()==0){
			new ParametrosSistema(cantidadUsuariosDestacados: 10, mubbiasPorConcretar: 5, mubbiasCerradas: 5).save(flush: true, failOnError: true)
		}
    }
    def destroy = {
    }
	
	def crearUsuarios(){
		new Person(email:"nicolas.eliaschev@gmail.com", username:"nikuelias", password:"nicolas",
			nickname:"Nico CEO", tipoUsuario: TipoUsuario.administrador(), version: 0, enabled: true,
			imgAvatar: "https://twimg0-a.akamaihd.net/profile_images/2909011660/0db5c60b05f09d1941217e8c2811d03e.png").save(flush: true, failOnError: true)
//		for (int i = 0; i < 100; i++){
//			new Usuario(mail:"usuario${i}@gmail.com", username:"usuario${i}", password:"usuario${i}",
//				nickname:"usuario${i}", tipoUsuario: TipoUsuario.normal(), version: 0,
//				imgAvatar: "https://twimg0-a.akamaihd.net/profile_images/2909011660/0db5c60b05f09d1941217e8c2811d03e.png").save(flush: true, failOnError: true)
//		}
	}
}
